---
title: IPolicySecurityDataProvider
summary: API reference for IPolicySecurityDataProvider.
status: draft
owner: SAIF Corporation
last_reviewed: 2026-08-21
library: SAIF.Business.View.Policy
reference_type: embedded
---

# IPolicySecurityDataProvider

This interface captures the policy facts that `clsPolicySecurity.IsPolicyValidForUser` reads from `clsPolicyData`: policy identity, secure-policy state, validity, agency ownership, and loss-control consultant identity. It appears to be an unfinished decoupling seam for the authorization logic, because the interface is declared beside `clsPolicySecurity` but no implementing type exists anywhere in this repository and the authorization methods still accept concrete `clsPolicyData` instances.**

## Purpose
- Describe the minimum policy-security data needed to evaluate secure-policy, agent, agency, and consultant access checks.
- Make the intended authorization inputs explicit without requiring every caller to understand the full `clsPolicyData` object graph.*
- Represent a possible abstraction point for decoupling `clsPolicySecurity` from `clsPolicyData`, although no completed implementation was found in this repository.**

## Context
- Namespace: `SAIF.Business.View.Policy`
- Assembly/package: `SAIF.Business.View.Policy` (embedded)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `PolicyNumber` | `ReadOnly Property PolicyNumber As Decimal` | Supplies the policy identifier being authorized. |
| `IsSecurePolicy` | `ReadOnly Property IsSecurePolicy As Boolean` | Indicates whether the policy should be treated as a SAIF-secured policy requiring the extra AD authorization check described by [BR-VP-003](../../business-rules.md#br-vp-003-secure-policy-requires-ad-authorization).* |
| `IsValid` | `ReadOnly Property IsValid As Boolean` | Indicates whether the target policy passed validation before user-access checks proceed, aligning with [BR-VP-004](../../business-rules.md#br-vp-004-invalid-or-zero-policy-number-is-never-valid).* |
| `AgentNumber` | `ReadOnly Property AgentNumber As Decimal` | Supplies the agent number compared against the requesting user's identifier in the agent-access branch of [BR-VP-005](../../business-rules.md#br-vp-005-access-granted-per-user-access-level-matrix).* |
| `AgencySeqNum` | `ReadOnly Property AgencySeqNum As Decimal` | Supplies the agency sequence number used as the alternate agent-access match in [BR-VP-005](../../business-rules.md#br-vp-005-access-granted-per-user-access-level-matrix).* |
| `LossControlConsultantID` | `ReadOnly Property LossControlConsultantID As String` | Carries the stored consultant identifier used to determine whether a loss-control user is assigned to the policy.* |
| `LossControlConsultantName` | `ReadOnly Property LossControlConsultantName As String` | Carries the consultant user-name value compared by the loss-control prefix rule in [BR-VP-007](../../business-rules.md#br-vp-007-loss-control-prefix-match) and [BR-VP-008](../../business-rules.md#br-vp-008-demo-loss-control-matched-on-useridname).* |

## Behavioral notes
- Inline comments on the interface map each member back to the corresponding `clsPolicyData` property path, showing that the contract was derived from the concrete object currently passed into authorization.
- No public method in this library accepts `IPolicySecurityDataProvider`, and no implementation was found in the repository, so the abstraction is currently unverified beyond its declaration.**
- The interface is declared inside `clsPolicySecurity.vb` rather than in a separate contract file, reinforcing the conclusion that it was introduced to support local refactoring that did not complete.*

## Constraints and usage notes
- Treat this interface as a declared but unused contract until an implementation or consumer is verified.
- Database-side authorization logic and any external implementation that may exist outside this repository remain unknown.**

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- `SAIF.Business.View.Policy/clsPolicySecurity.vb`
